#pragma once
#include <string>
extern "C" {
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libavutil/avutil.h>
#include <libavutil/imgutils.h>
#include <libswscale/swscale.h>
}

using std::string;
struct VedioFrame
{
    uint8_t *data;
    int width;
    int height;
    int format;
    int size;
    int64_t pts;
};
class FFmpegkits
{
public:
    FFmpegkits(const string url);
    ~FFmpegkits();
    void stop();
    void start();
        
private:
    string _url;
    //初始化数据
      AVFormatContext * avformatcontext = nullptr;//音视频数据封装上下文，描述音视频封装上下文
      AVCodecContext *avcodeccontext = nullptr;// 音视频编解码上下文，用于编码为压缩格式和解码成原始数据
      AVCodec * avcodec = nullptr;//解码器结构体,解码系统的核心抽象，有解码的各种功能
      AVFrame *avframe = nullptr;  //存储原始音视频的数据
      AVFrame *avframRGB = nullptr; //存储RGB原始数据
      AVPacket *avpacket;//存储压缩数据
      uint8_t *poutbuff = nullptr;
      struct SwsContext *pImageConver = nullptr;
      AVDictionary *avdic = nullptr;//这是ffmpeg的通用存储字典，用于存储key-value值

};

